/**

This file is part of MaCI/GIMnet.

MaCI/GIMnet is free software: you can redistribute it and/or modify it 
under the terms of the GNU Lesser General Public License as published 
by the Free Software Foundation, either version 3 of the License, or 
(at your option) any later version.

MaCI/GIMnet is distributed in the hope that it will be useful, but WITHOUT 
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public 
License for more details.

You should have received a copy of the GNU Lesser General Public 
License along with GIMnet. (See COPYING.LESSER) If not, see 
<http://www.gnu.org/licenses/>.

**/


///MACI INTERFACES
#include "MaCICtrlServer.hpp"

#include "RangingClient.hpp"
#include "PositionClient.hpp"
#include "SpeedCtrlClient.hpp"
#include "IMUClient.hpp"
#include "EnergyClient.hpp"
#include "CoordinateDriveClient.hpp"
#include "ImageClient.hpp"

///PLAYER TYPES
#include "PlayerModule.hpp"
#include "Player.hpp"
#include "RangingFilePlayer.hpp"
#include "PositionFilePlayer.hpp"
#include "SpeedCtrlFilePlayer.hpp"
#include "IMUFilePlayer.hpp"
#include "EnergyFilePlayer.hpp"
#include "WirelessFilePlayer.hpp"
#include "CoordinateDriveFilePlayer.hpp"
#include "ImageFilePlayer.hpp"


class PlayerModuleGenerator{



public:

  PlayerModuleGenerator();
  ~PlayerModuleGenerator();

  PlayerModule * GenerateNewPlayerModule(std::string filename,
                                         MaCI::MaCICtrl::CMaCICtrlServer *aMaCICtrlServer);

private:
  int iRangingMinor;
  int iPositionMinor;
  int iSpeedCtrlMinor;
  int iIMUMinor;
  int iEnergyMinor;
  int iWirelessMinor;
  int iCoordinateDriveMinor;
  int iImageMinor;
  PlayerModuleGenerator(const PlayerModuleGenerator&):
    iRangingMinor(0),
    iPositionMinor(0),
    iSpeedCtrlMinor(0),
    iIMUMinor(0),
    iEnergyMinor(0),
    iWirelessMinor(0),
    iCoordinateDriveMinor(0),
    iImageMinor(0){}

  PlayerModuleGenerator &operator=(const PlayerModuleGenerator&){return *this;}

};

